package java3_BasicSyntax.Keywords.TypeCasting;


//案例
public class demo {
    static byte b;
    static int i;
    static boolean bo;

    static Byte b1;
    static Integer i1;
    static Boolean bo1;

    public static void main(String[] args) {
        b1 = 10;
        i1 = 300;
        bo1 = Boolean.TRUE;
        //        装箱类型使用工具类运算
        int sum = Integer.sum(b1, i1);
        System.out.println(sum);
//        装箱类型之间的类型转换,不建议这样写，转换为byte类型时依然会数据溢出
        float f11 = i1.byteValue();
        System.out.println(f11);
/*
*Boolean类型,与true、false对比时，结果为1、0、-1
*但是true>false
* 源码：
*        public static int compare(boolean x, boolean y) {
        return (x == y) ? 0 : (x ? 1 : -1);
}
* 原因：
* 1.功能需求：方法需要比较两个布尔值，并返回一个整数值以便是关系，这种设计符合Java中Comparable接口的规范，便于在集合排序或其他场景使用
* 2.比较约定：比较方法一般需要表达大于、等于、小于，如果boolean b = x > y 的true、false都用0表示会导致逻辑混乱
* 3.信息丢失：不仅需要知道true、false是否相等，还需要知道大小
* 4.支持排序算法：排序依赖于比较结果来决定顺序，-1、0、1的存在使得Boolean可以像其他元素一样参与排序
 */

        System.out.println(bo1.compareTo(true));
        System.out.println(bo1.compareTo(false));
        System.out.println(bo1.booleanValue());
        System.out.println(bo1.equals(false));

        b = 110;
        i = 1000;
        bo = true;
//        向下类型转换时要注意数值范围
        byte i2 = (byte) i;
        System.out.println(i2);
//        向上转换类型
        int b2 = b;
        System.out.println(b2);
//        将byte、int转换为float、double时，不用加B、D
        float f1 = (float) b;
        System.out.println(f1);
        double d1 = (double) i;
        System.out.println(d1);
//        转换为char时，会自动转为Unicode
        char c1 = (char) i;
        System.out.println(c1);


    }
}
